/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package elaborate.h2x.transform.position.schema.statematcher;

import elaborate.h2x.transform.TransformingModel;
import elaborate.h2x.transform.TransformingNodeId;
import elaborate.h2x.transform.position.schema.state.PseudoState;
import java.util.List;

/**
 *
 * @author lendle
 */
public interface StateMatcher {
    /**
     * match existing childNodes against the given pseudo state
     * and return a valid child node sequence
     * note, the returned child node sequence can have different
     * order from the given sequence
     * @param pseudoState
     * @param childNodes
     * @return 
     */
    public List<TransformingNodeId> matchState(PseudoState pseudoState, TransformingModel model, List<TransformingNodeId> childNodes);
}
